// calendar_display.c
#include <stdio.h>
#include <stdlib.h>
#include "..\include\console\console_color.h"
#include "..\include\lunar_solar_conversion.h"
// 计算每月的天数
int getDaysInMonth(int year, int month) {
    int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    if (isLeapYear(year) && month == 2) {
        return 29;
    }
    return days[month - 1];
}
// 计算从1900年1月1日到指定日期的天数（用于确定月首是星期几）
int daysFrom1900(int year, int month, int day) {
    int totalDays = 0;
    for (int y = 1900; y < year; y++) {
        totalDays += isLeapYear(y)? 366 : 365;
    }
    for (int m = 1; m < month; m++) {
        totalDays += getDaysInMonth(year, m);
    }
    totalDays += day;
    return totalDays;
}
// 显示指定年月的月历
void displayMonthCalendar(int year, int month) {
    int days = getDaysInMonth(year, month);
    int startDay = (daysFrom1900(year, month, 1) + 6) % 7;
    printf("     %d年%d月\n", year, month);
    printf(" 日 一 二 三 四 五 六\n");
    for (int i = 0; i < startDay; i++) {
        printf("    ");
    }
    for (int i = 1; i <= days; i++) {
        if ((i + startDay - 1) % 7 == 0 || (i + startDay - 1) % 7 == 6) {
            SetConsoleColor(RED_TEXT, BLACK_BG);
        }
        printf("%2d ", i);
        SetConsoleColor(WHITE_TEXT, BLACK_BG);
        if ((i + startDay - 1) % 7 == 6) {
            printf("\n");
        }
    }
    printf("\n");
}
// 显示月历（获取用户输入后调用displayMonthCalendar）
void displayCalendar() {
    int year, month;
    printf("请输入要查询的年、月（格式：年 月）：");
    scanf("%d %d", &year, &month);
    displayMonthCalendar(year, month);
}